package asem.tablaSimbolos;

import java.util.HashMap;

import alex.TipoToken;
import alex.Token;
import asem.tablaSimbolos.tipo.TipoMetodo;

public class Metodo extends Constructor {

	protected TipoToken modificador;
	protected TipoMetodo retorno;

	public Metodo(Token id, TipoToken mod, TipoMetodo ret, String pertenece) {
		super(id);
		modificador = mod;
		retorno = ret;
		perteneceA = pertenece;
	}

	public void incrementarCantParametros() {
		cantParametros++;
	}

	public void setNombre(String nombre) {
		identificador.setLexema(nombre);
	}

	public int getCantParametros() {
		return cantParametros;
	}

	public void setModificador(TipoToken modificador) {
		this.modificador = modificador;
	}

	public String getModificador() {
		return modificador.toString();
	}

	public TipoMetodo getRetorno() {
		return retorno;
	}

	public void setRetorno(TipoMetodo retorno) {
		this.retorno = retorno;
	}

	public String getPerteneceA() {
		return perteneceA;
	}

	public void setPerteneceA(String perteneceA) {
		this.perteneceA = perteneceA;
	}

	public String getNombre() {
		return identificador.getLexema();
	}

	public HashMap<String, Parametro> getParametros() {
		return parametros;
	}

	public HashMap<String, VariableLocal> getVariablesLocales() {
		return variablesLocales;
	}

	public Variable getVariableLocal(String lexema) {
		return variablesLocales.get(lexema);
	}

	public Variable getParametro(String lexema) {
		return parametros.get(lexema);
	}

	public boolean esEstatico() {
		return modificador.equals("static");
	}
}
